<!DOCTYPE HTML>
<html>
<head>
  <meta charset="utf-8">
  <meta http-equiv="pragma" content="no-cache">
  <meta http-equiv="cache-control" content="no-cache">
  <meta http-equiv="expires" content="0">
  
  <title>容小狸的博客</title>
  <meta name="author" content="Rong Xiaoli">
  
  <meta name="description" content="Day 1我们组选了个B题，同轴电缆长度与终端负载检测上午还真没啥事，8点等题，上午买买器材，吃个午饭
同轴电缆长度测定原理：

向同轴电缆发一道脉冲，由于一端开路，同轴电缆会反弹一道脉冲，这就意味着在同轴线一端测量波形，我们能得到两个波形：一个是发射波，一个是反弹波。

GitHub上捞了个代码，但是ChibiOS&amp;#x2F;os&amp;#x2F;hal&amp;#x2F;ports&amp;#x2F;STM32&amp;#x2F;STM32F0xx&amp;#x2F;hal_lld.c报错，换成另一个就搞定了（第二个现在还在更新，而且两个差别其实不是特别大，我们就可以比较方便地套用了）
主要是仪器还没到，不能刷固件确认。其实只要固件有了，基本都没什么太大问题，然后就是写论文了。我们也是有能干起来的活的，比如测量的UI，不知道我能不能帮的上忙。（我C稀碎，而且python也是完全不会）
睡觉了，等第二天器材到了就开始忙了。
Day 2快递早上就到了，接下来就是用micropython对NanoVNC的操作了。
之前没搞过micropython，踩了一些坑，跟着这篇文章走了一遍，就能上了。首先是环境，安装所需的requirements，然后看到有个模块叫machine这个模块是micropython生成的，所以应该这么搞：进入虚拟环境："> 
  
  
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">

  
  <meta property="og:site_name" content="容小狸的博客"/>

  
    <meta property="og:image" content=""/>
  

  
    <link rel="alternative" href="/atom.xml" title="容小狸的博客" type="application/atom+xml">
  
  
    <link href="/favicon.png" rel="icon">
  
  
  <link rel="stylesheet" href="/css/bootstrap.min.css" media="screen" type="text/css">
  <link rel="stylesheet" href="/css/font-awesome.css" media="screen" type="text/css">
  <link rel="stylesheet" href="/css/style.css" media="screen" type="text/css">
  <link rel="stylesheet" href="/css/responsive.css" media="screen" type="text/css">
  <link rel="stylesheet" href="/css/highlight.css" media="screen" type="text/css">
  <link rel="stylesheet" href="/css/prism.css" media="screen" type="text/css">
  <link rel="stylesheet" href="/css/google-fonts.css" media="screen" type="text/css">
  <!--[if lt IE 9]><script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script><![endif]-->

  <script src="/js/jquery-2.0.3.min.js"></script>

  <!-- analytics -->
  
  <!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-70812759-1"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());

  gtag('config', 'UA-70812759-1');
</script>






<meta name="generator" content="Hexo 6.3.0"></head>

 <body>  
  <nav id="main-nav" class="navbar navbar-inverse navbar-fixed-top" role="navigation">
    <div class="container">
      <button type="button" class="navbar-header navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
		<span class="sr-only">Toggle navigation</span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
      </button>
	  <a class="navbar-brand" href="/">容小狸的博客</a>
      <div class="collapse navbar-collapse nav-menu">
		<ul class="nav navbar-nav">
		  
		  <li>
			<a href="/archives" title="全部文档">
			  <i class=""></i>Archives
			</a>
		  </li>
		  
		  <li>
			<a href="/categories" title="全部分类">
			  <i class=""></i>Categories
			</a>
		  </li>
		  
		  <li>
			<a href="/tags" title="全部标签">
			  <i class=""></i>Tags
			</a>
		  </li>
		  
		  <li>
			<a href="/about" title="我？我有什么值得注意的？">
			  <i class=""></i>About
			</a>
		  </li>
		  
		  <li>
			<a href="/" title="其实没有RSS，模板有，那就放着吧">
			  <i class=""></i>RSS
			</a>
		  </li>
		  
		</ul>
      </div>
    </div> <!-- container -->
</nav>
<div class="clearfix"></div>

  <div class="container">
  	<div class="content">
    	 


	
		<div class="page-header">
			<h1> </h1>
		</div>
	



<div class="row post">
	<!-- cols -->
	
	<div id="top_meta"></div>
	<div class="col-md-9">
	

	<!-- content -->
	<div class="mypage">		
	  		

	  <h2 id="Day-1"><a href="#Day-1" class="headerlink" title="Day 1"></a>Day 1</h2><p>我们组选了个B题，同轴电缆长度与终端负载检测<br>上午还真没啥事，8点等题，上午买买器材，吃个午饭</p>
<p>同轴电缆长度测定原理：</p>
<blockquote>
<p>向同轴电缆发一道脉冲，由于一端开路，同轴电缆会反弹一道脉冲，这就意味着在同轴线一端测量波形，我们能得到两个波形：一个是发射波，一个是反弹波。</p>
</blockquote>
<p>GitHub上捞了个<a target="_blank" rel="noopener" href="https://github.com/hugen79/NanoVNA-H">代码</a>，但是ChibiOS&#x2F;os&#x2F;hal&#x2F;ports&#x2F;STM32&#x2F;STM32F0xx&#x2F;hal_lld.c报错，换成<a target="_blank" rel="noopener" href="https://github.com/DiSlord/NanoVNA-D">另一个</a>就搞定了（第二个现在还在更新，而且两个差别其实不是特别大，我们就可以比较方便地套用了）</p>
<p>主要是仪器还没到，不能刷固件确认。其实只要固件有了，基本都没什么太大问题，然后就是写论文了。<br>我们也是有能干起来的活的，比如测量的UI，不知道我能不能帮的上忙。（我C稀碎，而且python也是完全不会）</p>
<p>睡觉了，等第二天器材到了就开始忙了。</p>
<h2 id="Day-2"><a href="#Day-2" class="headerlink" title="Day 2"></a>Day 2</h2><p>快递早上就到了，接下来就是用micropython对NanoVNC的操作了。</p>
<p>之前没搞过micropython，踩了一些坑，跟着<a target="_blank" rel="noopener" href="https://zhuanlan.zhihu.com/p/366411699">这篇文章</a>走了一遍，就能上了。<br>首先是环境，安装所需的requirements，然后看到有个模块叫machine<br>这个模块是micropython生成的，所以应该这么搞：<br>进入虚拟环境：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">source</span> ./venv/bin/activate</span><br></pre></td></tr></table></figure>
<p>Windows：</p>
<figure class="highlight cmd"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">./venv/scripts/activate.bat</span><br></pre></td></tr></table></figure>
<p>之后（使用阿里云的镜像加速）：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">pip install micropy-cli esptool -i https://mirrors.aliyun.com/pypi/simple</span><br></pre></td></tr></table></figure>

<p>擦除ESP32S3的固件：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">esptool.py --chip esp32s3 --port /dev/yourDevice erase_flash</span><br></pre></td></tr></table></figure>
<p>将micropython的固件刷上ESP32：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">esptool.py --chip esp32s3 --port /dev/youtDevice write_flash -z 0 /path/to/BIN_FILE.bin</span><br></pre></td></tr></table></figure>
<p>串口连接ESP32S3，波特率115200，就可以了。</p>
<p>第一天的时候其实是这样的：打算使用官方的开源代码进行逆向，获取数据。今天找到了这个：<br>有这个软件：<a target="_blank" rel="noopener" href="https://github.com/NanoVNA-Saver/nanovna-saver">NanoVNA-Saver</a>，是在Windows、Linux和MacOS上用于提取NanoVNA的数据的，也就是说NanoVNA-H使用串口进行调试，那么就可以通过串口指令提取数据：</p>
<blockquote>
<p>A multiplatform tool to save Touchstone files from the NanoVNA, sweep frequency spans in segments to gain more than 101 data points, and generally display and analyze the resulting data.</p>
</blockquote>
<blockquote>
<p>This software connects to a NanoVNA and extracts the data for display on a computer and allows saving the sweep data to Touchstone files.</p>
</blockquote>
<p>接下来就是串口截取数据了。Windows下可以使用<a target="_blank" rel="noopener" href="http://www.ceiwei.com/mt/">CommMonitor</a>进行监视，Linux一开始用的是这个<a target="_blank" rel="noopener" href="https://github.com/chipkin/Linux-HighSpeedSerialMonitor/">“HighSpeedSerialMonitor”</a>，但是用这个的话会报错闪退，ERROR - too many retries。我猜估计是占用问题，Windows下那个CommMonitor就没有问题。<br>搜到stackexchange.com貌似有个<a target="_blank" rel="noopener" href="https://unix.stackexchange.com/questions/12359/how-can-i-monitor-serial-port-traffic">类似问题的帖子</a>，提到：</p>
<blockquote>
<p><a target="_blank" rel="noopener" href="https://www.google.com/search?q=socat+serial+port+pty+tee+debug">Googling</a> “socat serial port pty tee debug” will point you to several “standard procedure” examples, one being:</p>
</blockquote>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">socat  /dev/ttyS0,raw,<span class="built_in">echo</span>=0  \</span><br><span class="line">	SYSTEM:<span class="string">&#x27;tee in.txt | socat - &quot;PTY,link=/tmp/ttyV0,raw,echo=0,waitslave&quot; | tee out.txt&#x27;</span></span><br></pre></td></tr></table></figure>
<p>貌似没问题，时间来不及了，没时间验证，明天再说。<br>明天要验证socat端口转发，两个佬晚上通宵搞定软件和硬件，明天写完论文就搞定了。</p>

	  <div class="article-footer-copyright">

    本博客采用 <a href="https://creativecommons.org/licenses/by-nc-sa/4.0/deed.zh" target="_blank">知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议(CC BY-NC-SA 4.0) 发布.</a>
</div>

	</div>

	
	
	<div>
  	<center>

	<div class="pagination">

    
    
    <a type="button" class="btn btn-default disabled"><i class="fa fa-arrow-circle-o-left"></i>Prev</a>
    

    <a href="/" type="button" class="btn btn-default"><i class="fa fa-home"></i>Home</a>
    
    <a href="/2023/03/21/RongXiaoliBotv0-2-1/" type="button" class="btn btn-default ">Next<i
                class="fa fa-arrow-circle-o-right"></i></a>
    

    
</div>


    </center>
	</div>
	
	<!-- comment -->
	<!--
<section id="comment">
    <h2 class="title">Comments</h2>

    
</section>

-->
	
	
	
	</div> <!-- col-md-9/col-md-12 -->


	
	<div id="side_meta">
		<div class="col-md-3" id="post_meta"> 

	<!-- date -->
	
	<div class="meta-widget">
	<i class="fa fa-clock-o"></i>
	2023-08-03 
	</div>
	

	<!-- categories -->
    

	<!-- tags -->
		

	<!-- toc -->
	<div class="meta-widget">
	
	</div>
	
    <hr>
	
</div><!-- col-md-3 -->

		

	</div>
	
		

</div><!-- row -->

<!--
 -->



	</div>
  </div>
  <div class="container-narrow">
  <footer> <p>
  
  &copy; 2023 Rong Xiaoli's Blog
  
      powered by <a href="http://hexo.io/" target="_blank">Hexo</a>.Theme <a href="https://github.com/Ares-X/hexo-theme-freemind.bithack" target="_blank">freemind.bithack</a>  
</p>
 </footer>
</div> <!-- container-narrow -->
  


  
<a id="gotop" href="#">   
  <span>⬆︎TOP</span>
</a>

<script src="/js/jquery.imagesloaded.min.js"></script>
<script src="/js/gallery.js"></script>
<script src="/js/bootstrap.min.js"></script>
<script src="/js/main.js"></script>
<script src="/js/search.js"></script> 


<link rel="stylesheet" href="/fancybox/jquery.fancybox.css" media="screen" type="text/css">
<script src="/fancybox/jquery.fancybox.pack.js"></script>
<script type="text/javascript">
(function($){
  $('.fancybox').fancybox();
})(jQuery);
</script>



   <script type="text/javascript">      
     var search_path = "search.xml";
	 if (search_path.length == 0) {
	 	search_path = "search.xml";
	 }
	 var path = "/" + search_path;
     searchFunc(path, 'local-search-input', 'local-search-result');
   </script>

</body>
   </html>
